package com.lanchetech.admin.service;


import com.lanchetech.bean.request.*;
import com.lanchetech.bean.response.BasePageResp;
import com.lanchetech.bean.response.BaseResp;
import com.lanchetech.bean.response.KdzsCallBackResp;
import com.lanchetech.bean.response.ResultData;
import com.lanchetech.bean.vo.*;
import com.lanchetech.common.exception.ResultCodeException;
import com.lanchetech.entity.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;

public interface ShopService {

    BaseResp editShop(Shop req);

    BaseResp editShopServiceRate(Shop req);

    BaseResp createTenant(Shop shop);

    ResultData<BasePageResp<ShopVO>> getShopPage(PageReq req);

    ResultData<Shop> getShopDetail(Long id);

    BaseResp deleteShop(Long id);

    BaseResp editShopUser(Long id, String phone);

    BaseResp resetMerchantPassword(Long shopId);

    BaseResp editShopBoss(Long id, String phone, String name, String idCard);

    BaseResp createShopInvite(Long id, String phone);

    BaseResp editAppointmentSetting(AppointmentSetting req);

    ResultData<AppointmentSetting> getAppointmentSettingBySpuId(Long spuId);

    ResultData<BasePageResp<AppointmentSettingVO>> getAppointmentSettingPage(PageReq req);

    BaseResp auditActivityRegister(ActivityRegister activityRegister);

    BaseResp deleteActivityRegister(Long id);

    ResultData<BasePageResp<ActivityRegisterVO>> getActivityRegisterPage(PageReq req);

    ResultData<BasePageResp<IndustryVO>> getIndustryList(PageReq req);

    ResultData<List<IndustryVO>> getIndustry();

    BaseResp editIndustry(Industry industry);

    BaseResp deleteIndustry(Long id);

    ResultData<List<IndustryIdAndNameVO>> getIndustryFirstList(Admin admin);

    ResultData<List<IndustryIdAndNameVO>> getIndustrySecondList(PageReq req);

    BaseResp editAnnouncement(Announcement req);

    BaseResp sendAnnouncement(AnnouncementReq req);

    ResultData<Announcement> getAnnouncementDetail(Long id);

    BaseResp deleteAnnouncement(Long id);

    ResultData<BasePageResp<Announcement>> getAnnouncementPage(AnnouncementPageReq req);

    ResultData<BasePageResp<ShopAnnouncementVO>> getShopAnnouncementPage(ShopAnnouncementPageReq req);

    ResultData<List<Announcement>> getShopAnnouncementList();

    ResultData<BasePageResp<BossInviteShopVO>> getBossInviteShopPage(BossInviteShopReq req);

    ResultData<BasePageResp<BossIdentityVO>> getBossIdentityPage(BossIdentityReq req);

    KdzsCallBackResp kuaidizsCallBack(Map<String, String> params);

    BaseResp verify(Long id, boolean verify) throws ResultCodeException;

    BaseResp applyShop(Shop shop);
}